/*   Pseudotrans - Codificador de pseudocodigo a lenguaje pascal
    Copyright (C) 2006  Alejandro Lucas Baldres, Nicolas Secreto
    Copyright (C) 2011  Alejandro Lucas Baldres, Leandro Di Dio, Diego Marfil

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/
//Comment Modify: 12/10/2011
#include <stdio.h>

interface
procedure Cargo_y_traduzco (Archivo,Version,fecha_crea,plataforma,destino,directorio_pse,directorio_pto:String);

implementation
uses
StrUtils,agrego_pto,Func_Busqueda,archivos,Classes,agrego_uses;
////////////////////Procedimiento principal que dibuja la pantalla, carga de archivo, etc
////////////////////Main procedure what draw the screen, file loading, etc.
procedure Cargo_y_traduzco (Archivo,Version,fecha_crea,plataforma,destino,directorio_pse,directorio_pto:String);
 var
 i:integer;
 arc:file of byte;
 aux:TStringList;

 begin
 aux:=TStringList.create; //Creo el objeto de tipo lista de cadenas / Create Object of String List type
 //Imprimo encabezado en la pantalla / Print Screen Header
 writeln ('PseudoTrans traductor de pseudocodigo Version '+Version+' ['+fecha_crea+'] para '+Plataforma);
 writeln('Copyright (C) 2006 by Alejandro Lucas Baldres, Nicolas Secreto');
 writeln;
 //Cargo el archivo en la lista de cadenas y recorrro la misma, convirtiendo los tab en espacios y luego
 //convierto varios espacios en un solo espacio e incremento el numero de lineas
//File Load to String List and go around this, converting the tabs to spaces  and later convert varius spaces to one space a incremment line number
   aux.LoadFromFile(Archivo);
   for i:=0 to aux.Count-1 do  
    begin
    aux.Strings[i]:=Tab2Space(aux.strings[i],0);
    aux.Strings[i]:=DelSpace1(aux.Strings[i]); //Redusco la cantidad de espacios a 1 / Spaces amount decrease to one
    end;
   //Agrego ; ó ./ add ; or .
   Agrego_Unit (aux);
   Agrego (aux,Directorio_pto);
   //Traduzco / Traslate
   Busco(aux,Directorio_pse);
   //Guardo el archivo fuente / Save Code File
   aux.SaveToFile(Destino);
   //Comienzo la impresion del resultado / Begin the result print 
   writeln('RESULTADO');
   writeln ('El codigo fuente fue generado en: '+Destino);
   assign(Arc,Destino);
   reset(arc);
   writeln ('Tamaño del Archivo Generado: ',fileSize(Arc),' Bytes');
   close(Arc);
   writeln ('Total de lineas: ',aux.count-1);
   writeln;
   writeln ('GRACIAS POR UTILIZAR EL PROGRAMA!!!!!!');
   //Fin de la impresion de los resultados / end the result print
   //Genero el log si se envio el parametro / Generate log if send the parameter
   Genero_logs(aux.count-1,Destino);
 end;
end.
